le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
int(x, y) → if(le(x, y), x, y)
if(true, x, y) → cons(x, int(s(x), y))
if(false, x, y) → nil
↳ QTRS
↳ Overlay + Local Confluence
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
int(x, y) → if(le(x, y), x, y)
if(true, x, y) → cons(x, int(s(x), y))
if(false, x, y) → nil
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
int(x, y) → if(le(x, y), x, y)
if(true, x, y) → cons(x, int(s(x), y))
if(false, x, y) → nil
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
int(x0, x1)
if(true, x0, x1)
if(false, x0, x1)
INT(x, y) → LE(x, y)
INT(x, y) → IF(le(x, y), x, y)
IF(true, x, y) → INT(s(x), y)
LE(s(x), s(y)) → LE(x, y)
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
int(x, y) → if(le(x, y), x, y)
if(true, x, y) → cons(x, int(s(x), y))
if(false, x, y) → nil
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
int(x0, x1)
if(true, x0, x1)
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
INT(x, y) → LE(x, y)
INT(x, y) → IF(le(x, y), x, y)
IF(true, x, y) → INT(s(x), y)
LE(s(x), s(y)) → LE(x, y)
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
int(x, y) → if(le(x, y), x, y)
if(true, x, y) → cons(x, int(s(x), y))
if(false, x, y) → nil
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
int(x0, x1)
if(true, x0, x1)
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
LE(s(x), s(y)) → LE(x, y)
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
int(x, y) → if(le(x, y), x, y)
if(true, x, y) → cons(x, int(s(x), y))
if(false, x, y) → nil
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
int(x0, x1)
if(true, x0, x1)
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
LE(s(x), s(y)) → LE(x, y)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
int(x0, x1)
if(true, x0, x1)
if(false, x0, x1)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
int(x0, x1)
if(true, x0, x1)
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
LE(s(x), s(y)) → LE(x, y)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
INT(x, y) → IF(le(x, y), x, y)
IF(true, x, y) → INT(s(x), y)
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
int(x, y) → if(le(x, y), x, y)
if(true, x, y) → cons(x, int(s(x), y))
if(false, x, y) → nil
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
int(x0, x1)
if(true, x0, x1)
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
INT(x, y) → IF(le(x, y), x, y)
IF(true, x, y) → INT(s(x), y)
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
int(x0, x1)
if(true, x0, x1)
if(false, x0, x1)
int(x0, x1)
if(true, x0, x1)
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
INT(x, y) → IF(le(x, y), x, y)
IF(true, x, y) → INT(s(x), y)
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
(1) (INT(s(x2), x3)=INT(x4, x5) ⇒ INT(x4, x5)≥IF(le(x4, x5), x4, x5))
(2) (INT(s(x2), x3)≥IF(le(s(x2), x3), s(x2), x3))
(3) (IF(le(x6, x7), x6, x7)=IF(true, x8, x9) ⇒ IF(true, x8, x9)≥INT(s(x8), x9))
(4) (le(x6, x7)=true ⇒ IF(true, x6, x7)≥INT(s(x6), x7))
(5) (true=true ⇒ IF(true, 0, x12)≥INT(s(0), x12))
(6) (le(x14, x15)=true∧(le(x14, x15)=true ⇒ IF(true, x14, x15)≥INT(s(x14), x15)) ⇒ IF(true, s(x14), s(x15))≥INT(s(s(x14)), s(x15)))
(7) (IF(true, 0, x12)≥INT(s(0), x12))
(8) (IF(true, x14, x15)≥INT(s(x14), x15) ⇒ IF(true, s(x14), s(x15))≥INT(s(s(x14)), s(x15)))
POL(0) = 0
POL(IF(x1, x2, x3)) = -x1 - x2 + x3
POL(INT(x1, x2)) = 1 - x1 + x2
POL(c) = -1
POL(false) = 0
POL(le(x1, x2)) = 0
POL(s(x1)) = 1 + x1
POL(true) = 0
The following pairs are in Pbound:
INT(x, y) → IF(le(x, y), x, y)
The following rules are usable:
IF(true, x, y) → INT(s(x), y)
false → le(s(x), 0)
true → le(0, y)
le(x, y) → le(s(x), s(y))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ AND
↳ QDP
↳ DependencyGraphProof
↳ QDP
IF(true, x, y) → INT(s(x), y)
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ AND
↳ QDP
↳ QDP
↳ DependencyGraphProof
INT(x, y) → IF(le(x, y), x, y)
le(0, y) → true
le(s(x), 0) → false
le(s(x), s(y)) → le(x, y)
le(0, x0)
le(s(x0), 0)
le(s(x0), s(x1))